package com.cdtu.mapper;

import com.cdtu.entity.Notice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Sakura  pzq
 * @description 针对表【notice】的数据库操作Mapper
 * @createDate 2023-01-08 20:53:16
 * @Entity com.cdtu.entity.Notice
 */

@Mapper
public interface NoticeMapper extends BaseMapper<Notice> {

    /**
     * 查找公告  根据ID
     * @param id
     * @return
     */
    Notice selectById(Long id);

    /**
     * 查找正在滚动的公告
     * @return
     */
    List<Notice> selectByPriority();
    /**
     * 修改公告  根据条件去修改公告
     * @param notice
     * @return
     */
    int updateByCondition(Notice notice);

    /**
     * 根据id删除公告
     * @param id
     * @return
     */
    int deleteByID(Long id);

    /**
     * 分页查询
     * 具备按照   标题或优先级 or 同时查询两种条件  分页查询
     * @param startIndex=(pageNum-1)*pageSize
     * @param pageSize
     * @return
     */
    List<Notice> selectByPage(@Param("startIndex") int startIndex,
                              @Param("pageSize") int pageSize,
                              @Param("title") String title);
    /**
     * 分页查询
     * 具备按照   标题或优先级 or 同时查询两种条件  分页查询
     * @param startIndex=(pageNum-1)*pageSize
     * @param pageSize
     * @return
     */
    List<Notice> selectRollingByPage(@Param("startIndex") int startIndex,
                              @Param("pageSize") int pageSize,
                              @Param("title") String title,
                              @Param("priority") Integer priority);
    /**
     * 查询总条数
     */
    int findTotal();
    /**
     * 查询未进行滑动展示的总条数
     */
    int findUnRollingTotal();
    int findUnRollingByNameTotal(@Param("title") String title);
    /**
    * 搜索查询公告的总条数
    * */
    int findByNameTotal(@Param("title") String title);
    /**
     *  新建公告  publicTime==updateTime  默认最初优先级为0  id需要自己设置  管理员仅标题 简介 图片 内容
     * @param notice
     * @return
     */
    int insertNewNotice(Notice notice);

    /**
     * 设置优先级设置 滚动状态  1为滚动展示  0为不滚动展示
     * @param id
     * @return
     */
    int updateById(@Param("id") Long id,@Param("priority")Integer priority);
    /**
     * 查询正在滚动的公告数量
     */
    int queryRollingLength();
}




